プロパティ order
orderは、デフォルト0です。特定の要素に1をセットすると、最後に表示されます
例えば、全要素に2をセットしておいてから、特定の要素に1をセットすると、最初に表示されます
この例は、flex-direction row-reverseやcolumn-reverse と同じような動作ですが、
data-attributeとjquery等を使うと複雑なソートも処理できるかもしれません。
HTML
<input type="checkbox" id="sort" value="DESC" />降順 <ul class="menu"> <li class="l1">list 1</li> <li class="l2">list 2</li> <li class="l3">list 3</li> <li class="l4">list 4</li> <li class="l5">list 5</li> <li class="l6">list 6</li> </ul> <div class="menu"> <div class="l1">div 1</div> <div class="l2">div 2</div> <div class="l3">div 3</div> <div class="l4">div 4</div> <div class="l5">div 5</div> <div class="l6">div 6</div> </div>
CSS
.menu{
display:flex;
flex-direction:column;
}
div.menu{
flex-direction:row;
flex-wrap:wrap;
}
div.menu div[class^="l"]{
width:150px;
text-align:center;
padding:50px 0;
margin:5px;
color:#fff;
font-weight:700;
}
div.menu div:nth-child(1){
background:#1abc9c;
}
div.menu div:nth-child(2){
background:#33ce74;
}
div.menu div:nth-child(3){
background:#3498db;
}
div.menu div:nth-child(4){
background:#9b59b6;
}
div.menu div:nth-child(5){
background:#34495e;
}
div.menu div:nth-child(6){
background:#e67e22;
}
input":checked ~ .menu .l6{
-web-kit-order:1;
order:1;
}